package com.ruoyi.order.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 订单主对象 tb_order
 * 
 * @author ruoyi
 * @date 2025-08-18
 */
public class TbOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单ID */
    @Excel(name = "订单ID")
    private Long orderId;

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    @Excel(name = "订单编号")
    private String orderNo;
    /** 订单状态 */
    @Excel(name = "订单状态")
    private Long orderStatus;

    /** 订单金额 */
    @Excel(name = "订单金额")
    private BigDecimal orderAmount;

    /** 服务时长（分钟，如 90） */
    @Excel(name = "服务时长", readConverterExp = "分=钟，如,9=0")
    private Long serviceDuration;

    /** 服务里程（公里，如 30） */
    @Excel(name = "服务里程", readConverterExp = "公=里，如,3=0")
    private Long serviceMileage;

    /** 支付模式：微信支付、支付宝等 */
    @Excel(name = "支付模式：微信支付、支付宝等")
    private Long paymentMode;

    /** 服务类型：预约订单、实时订单 */
    @Excel(name = "服务类型：预约订单、实时订单")
    private Long serviceName;

    /** 车辆级别：舒适型、豪华型等 */
    @Excel(name = "车辆级别：舒适型、豪华型等")
    private Long carLevel;

    /** 上车地址 */
    @Excel(name = "上车地址")
    private String pickupAddress;

    /** 下车地址 */
    @Excel(name = "下车地址")
    private String dropoffAddress;

    /** 用车时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "用车时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date useTime;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentTime;

    /** 下单来源：自有订单-IOS-iPhone X、自有订单-安卓-4.0 等 */
    @Excel(name = "下单来源：自有订单-IOS-iPhone X、自有订单-安卓-4.0 等")
    private Long source;

    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }

    public void setOrderStatus(Long orderStatus) 
    {
        this.orderStatus = orderStatus;
    }

    public Long getOrderStatus() 
    {
        return orderStatus;
    }

    public void setOrderAmount(BigDecimal orderAmount) 
    {
        this.orderAmount = orderAmount;
    }

    public BigDecimal getOrderAmount() 
    {
        return orderAmount;
    }

    public void setServiceDuration(Long serviceDuration) 
    {
        this.serviceDuration = serviceDuration;
    }

    public Long getServiceDuration() 
    {
        return serviceDuration;
    }

    public void setServiceMileage(Long serviceMileage) 
    {
        this.serviceMileage = serviceMileage;
    }

    public Long getServiceMileage() 
    {
        return serviceMileage;
    }

    public void setPaymentMode(Long paymentMode) 
    {
        this.paymentMode = paymentMode;
    }

    public Long getPaymentMode() 
    {
        return paymentMode;
    }

    public void setServiceName(Long serviceName) 
    {
        this.serviceName = serviceName;
    }

    public Long getServiceName() 
    {
        return serviceName;
    }

    public void setCarLevel(Long carLevel) 
    {
        this.carLevel = carLevel;
    }

    public Long getCarLevel() 
    {
        return carLevel;
    }

    public void setPickupAddress(String pickupAddress) 
    {
        this.pickupAddress = pickupAddress;
    }

    public String getPickupAddress() 
    {
        return pickupAddress;
    }

    public void setDropoffAddress(String dropoffAddress) 
    {
        this.dropoffAddress = dropoffAddress;
    }

    public String getDropoffAddress() 
    {
        return dropoffAddress;
    }

    public void setUseTime(Date useTime) 
    {
        this.useTime = useTime;
    }

    public Date getUseTime() 
    {
        return useTime;
    }

    public void setPaymentTime(Date paymentTime) 
    {
        this.paymentTime = paymentTime;
    }

    public Date getPaymentTime() 
    {
        return paymentTime;
    }

    public void setSource(Long source) 
    {
        this.source = source;
    }

    public Long getSource() 
    {
        return source;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("orderId", getOrderId())
            .append("orderNo", getOrderNo())
            .append("orderStatus", getOrderStatus())
            .append("orderAmount", getOrderAmount())
            .append("serviceDuration", getServiceDuration())
            .append("serviceMileage", getServiceMileage())
            .append("paymentMode", getPaymentMode())
            .append("serviceName", getServiceName())
            .append("carLevel", getCarLevel())
            .append("pickupAddress", getPickupAddress())
            .append("dropoffAddress", getDropoffAddress())
            .append("createTime", getCreateTime())
            .append("useTime", getUseTime())
            .append("paymentTime", getPaymentTime())
            .append("source", getSource())
            .toString();
    }
}
